const express = require('express');
const app = express();
const port = 3000;

// 解析 JSON 请求体  , 艹 , 这个玩意真的是坑 ,为他熬夜到1:56
const bodyParser = require('body-parser');
app.use(bodyParser.json());


// 模拟用户数据存储（在实际应用中可能是数据库）
const mysql = require('mysql2');

// 创建一个 MySQL 连接配置
const connection = mysql.createConnection({
  host: 'localhost', // 数据库服务器地址
  user: 'root', // 数据库用户名
  password: '123456', // 数据库密码
  database: 'server' // 数据库名称
});

// 连接到数据库
connection.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err);
    return;
  }
  console.log('Connected to MySQL database');
});

// 封装响应数据
function Result(data, code, msg) {
  return JSON.stringify({
    code: code,
    data: data,
    msg: msg
  });
}

// 获取所有用户的路由（GET /users）
app.get('/users', (req, res) => {
  const query = 'SELECT * FROM users'; // 替换为你的表名和查询语句
  connection.query(query, (err, results) => {
    if (err) {
      console.error('Error querying database:', err);
      res.status(500).send(Result(null, 500, 'Error querying database'));
      return;
    }
    res.set('Content-Type', 'application/json');
    res.send(Result(results, 200, 'Query successful'));
  });
});

// 获取单个用户的路由（GET /users/{id}）
app.get('/users/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const query = 'SELECT * FROM users WHERE id =?'; // 替换为你的表名和查询语句
  connection.query(query, [id], (err, results) => {
    if (err) {
      console.error('Error querying database:', err);
      res.status(500).send(Result(null, 500, 'Error querying database'));
      return;
    }
    if (results.length === 0) {
      res.status(404).send(Result(null, 404, 'User not found'));
    } else {
      res.set('Content-Type', 'application/json');
      res.send(Result(results[0], 200, 'Query successful'));
    }
  });
});

// 创建新用户的路由（POST /users）
app.post('/users/add', (req, res) => {
  const newUser = req.body;
  console.log(newUser);
  const query = 'INSERT INTO users (name, email) VALUES (?,?)'; // 替换为你的表名和插入语句
  connection.query(query, [newUser.name, newUser.email], (err, results) => {
    if (err) {
      console.error('Error inserting into database:', err);
      res.status(500).send(Result(null, 500, 'Error inserting into database'));
      return;
    }
    newUser.id = results.insertId;
    res.status(201).set('Content-Type', 'application/json').send(Result(newUser, 201, 'Creation successful'));
  });
});

// 更新用户信息的路由（PUT /users/{id}）
app.put('/users/update', (req, res) => {
  const updatedUser = req.body;

  if (!updatedUser.id) {
    res.status(404).send(Result(null, 404, 'User not found'))
  }

  const query = 'UPDATE users SET name =?, email =? WHERE id =?'; // 替换为你的表名和更新语句
  connection.query(query, [updatedUser.name, updatedUser.email, updatedUser.id], (err, results) => {
    if (err) {
      console.error('Error updating database:', err);
      res.status(500).send(Result(null, 500, 'Error updating database'));
      return;
    }
    if (results.affectedRows === 0) {
      res.status(404).send(Result(null, 404, 'User not found'));
    } else {
      res.set('Content-Type', 'application/json');
      res.send(Result(updatedUser, 200, 'Update successful'));
    }
  });
});

// 删除用户的路由（DELETE /users/{id}）
app.delete('/users/delete/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const query = 'DELETE FROM users WHERE id =?'; // 替换为你的表名和删除语句
  connection.query(query, [id], (err, results) => {
    if (err) {
      console.error('Error deleting from database:', err);
      res.status(500).send(Result(null, 500, 'Error deleting from database'));
      return;
    }
    if (results.affectedRows === 0) {
      res.status(404).send(Result(null, 404, 'User not found'));
    } else {
      res.status(204).send(Result(null, 204, 'Deletion successful'));
    }
  });
});

app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});